其他
Taichi v0.9.0 发布,Mac 终于支持 GGUI 了!
新功能
1. 矩阵的动态下标(实验功能)在之前的 Taichi 版本中,矩阵只能通过常量下标访问。因此,你没有办法直接完成一些诸如把一个向量的最小值抹成 0 的常用操作:
当然你也可以用下面的方法(强制循环展开)绕过去,但这不够直观,效率也较低:
有了矩阵动态下标这一实验功能之后,你就可以顺畅地用前一种方式来写程序了,通过设置 ti.init(dynamic_index=True) 即可开启。
在 v0.9.0 中,我们还加入了一个新的示例程序——隐式有限元弹性物体仿真 (ti example implicit_fem),同样展现了动态下标功能的好处。在这个示例程序中,我们构建了一个较大(12 × 12)的海森矩阵用于隐式时间积分。如果没有动态下标功能,整个矩阵的构造循环需要被展开,使得编译时间需要 70 秒;而有了动态下标功能,直接按传统方式写循环就可以,编译时间减少到了 2.5 秒。
以下是一些简单的 GGUI 样例程序的使用方式:
3. 与 Google Colab 适配如果之前你曾尝试在 Colab 上使用 Taichi,你可能发现 Colab 的系统会崩溃。在 v0.9.0 中,我们修复了导致该问题的代码,从而使 Taichi 可以在 Colab 上顺利运行。欢迎大家在 Colab 上畅享 Taichi 新版本!
改进
1. 更稳定、组织更合理的 API我们非常重视保持 API 的长期稳定性, 并希望用户使用正确的 API 集合。为此,在这次的发布中我们重新整理了模块的结构,废弃了一些过时的 API,并隐藏了一些内部的 API。一些主要的改动有:
2. 更简洁精准的报错信息在 Taichi 以往的版本中,编译错误经常会抛出很长的报错信息,其中大部分都对用户没有任何帮助。因此,用户往往需要花费很长的时间来阅读报错信息和定位出错的代码。在此次的更新中,我们精简了报错信息,只留下对用户有用的部分,大幅改善了用户的调试体验。
例如,对于下面的代码,
之前,Taichi 的报错信息像这样:
滑动可看,此处有 41 行
在 v0.9.0,报错信息变成了这样:
3. 更新的文档站为了提升可读性和用户体验,我们重构了 Taichi 的文档站,并把新的 API 参考站(文档站右上角)整合其中。
在讨论区内,最近一个比较热门的话题是类型定义和对象构造的方式(#4086, #4183)。简单来说,由于刚接触 Taichi 的同学有时会对 ti.Vector,ti.types.vector,ti.Vector.field 等一系列相似却又不同的 API 感到困惑,我们希望让他们变得更清晰,一种可能的改变方向是:
类型名一律用小写;
用 ti.types.vector 来定义一个向量类型;
定义完类型如 my_vec2i = ti.types.vector(2, ti.i32) 后,用 my_vec2i([5, 10]) 来构造一个向量对象;
为了方便,依然保留 ti.vector([1, 2]) 作为 ti.types.vector()([1, 2]) 的等价表达,由编译器完成对缺失类型信息的自动推导;
使用 ti.field(dtype=my_vec2i, shape=100) 来构造一个 field 对象。
太极图形研发团队期待聆听你们的观点!阅读原文前往 GitHub 查看完整发布信息。